home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 February
/
EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso
/
earcd
/
comm2
/
termsorc.lha
/
Extras
/
Source
/
gtlayout-source.lha
/
LTP_Storage.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-09-24
|
4KB
|
238 lines
/* GadTools layout toolkit
**
** Copyright © 1993-1995 by Olaf `Olsen' Barthel
** Freely distributable.
*/
#include "gtlayout_global.h"
VOID __regargs
LTP_GetStorage(ObjectNode *Node)
{
if(Node -> Storage)
{
LONG Number = 0;
STRPTR String = NULL;
switch(Node -> StorageType)
{
case STORAGE_BYTE:
Number = *(BYTE *)Node -> Storage;
break;
case STORAGE_UBYTE:
Number = *(UBYTE *)Node -> Storage;
break;
case STORAGE_WORD:
Number = *(WORD *)Node -> Storage;
break;
case STORAGE_UWORD:
Number = *(UWORD *)Node -> Storage;
break;
case STORAGE_LONG:
Number = *(LONG *)Node -> Storage;
break;
case STORAGE_ULONG:
Number = *(ULONG *)Node -> Storage;
break;
case STORAGE_STRPTR:
String = Node -> Storage;
break;
}
switch(Node -> Type)
{
case CHECKBOX_KIND:
case LISTVIEW_KIND:
case MX_KIND:
case CYCLE_KIND:
case PALETTE_KIND:
case SLIDER_KIND:
case SCROLLER_KIND:
#if defined(DO_POPUP_KIND) && defined(DO_BOOPSI_KIND)
case POPUP_KIND:
#endif
#if defined(DO_TAB_KIND) && defined(DO_BOOPSI_KIND)
case TAB_KIND:
#endif
#ifdef DO_GAUGE_KIND
case GAUGE_KIND:
#endif
#ifdef DO_TAPEDECK_KIND
case TAPEDECK_KIND:
#endif /* DO_TAPEDECK_KIND */
#ifdef DO_FRACTION_KIND
case FRACTION_KIND:
#endif
Node -> Current = Number;
break;
case STRING_KIND:
#ifdef DO_PASSWORD_KIND
case PASSWORD_KIND:
#endif
Node -> Special . String . String = String;
break;
case INTEGER_KIND:
Node -> Special . Integer . Number = Number;
break;
#ifdef DO_LEVEL_KIND
case LEVEL_KIND:
Node -> Special . Level . Level = Number;
break;
#endif /* DO_LEVEL_KIND */
}
}
}
/*****************************************************************************/
VOID __regargs
LTP_PutStorage(ObjectNode *Node)
{
if(Node -> Storage)
{
LONG Number = 0;
STRPTR String = NULL;
switch(Node -> Type)
{
case CHECKBOX_KIND:
case LISTVIEW_KIND:
case MX_KIND:
case CYCLE_KIND:
case PALETTE_KIND:
case SLIDER_KIND:
case SCROLLER_KIND:
#if defined(DO_POPUP_KIND) && defined(DO_BOOPSI_KIND)
case POPUP_KIND:
#endif
#if defined(DO_TAB_KIND) && defined(DO_BOOPSI_KIND)
case TAB_KIND:
#endif
#ifdef DO_GAUGE_KIND
case GAUGE_KIND:
#endif
#ifdef DO_TAPEDECK_KIND
case TAPEDECK_KIND:
#endif /* DO_TAPEDECK_KIND */
Number = Node -> Current;
break;
#ifdef DO_FRACTION_KIND
case FRACTION_KIND:
if(Node -> Host)
Number = (LONG)LT_String2Fixed(((struct StringInfo *)Node -> Host -> SpecialInfo) -> Buffer);
else
Number = Node -> Current;
break;
#endif
#ifdef DO_PASSWORD_KIND
case PASSWORD_KIND:
String = Node -> Special . String . Original;
break;
#endif
case STRING_KIND:
if(Node -> Host)
String = ((struct StringInfo *)Node -> Host -> SpecialInfo) -> Buffer;
else
String = Node -> Special . String . String;
break;
case INTEGER_KIND:
if(Node -> Host)
Number = ((struct StringInfo *)Node -> Host -> SpecialInfo) -> LongInt;
else
Number = Node -> Special . Integer . Number;
break;
#ifdef DO_LEVEL_KIND
case LEVEL_KIND:
Number = Node -> Special . Level . Level;
break;
#endif /* DO_LEVEL_KIND */
}
switch(Node -> StorageType)
{
case STORAGE_BYTE:
if(!String)
*(BYTE *)Node -> Storage = (BYTE)Number;
break;
case STORAGE_UBYTE:
if(!String)
*(UBYTE *)Node -> Storage = (UBYTE)Number;
break;
case STORAGE_WORD:
if(!String)
*(WORD *)Node -> Storage = (WORD)Number;
break;
case STORAGE_UWORD:
if(!String)
*(UWORD *)Node -> Storage = (UWORD)Number;
break;
case STORAGE_LONG:
if(!String)
*(LONG *)Node -> Storage = (LONG)Number;
break;
case STORAGE_ULONG:
if(!String)
*(ULONG *)Node -> Storage = (ULONG)Number;
break;
case STORAGE_STRPTR:
if(String)
strcpy(Node -> Storage,String);
break;
}
}
}